import router from '@/router'
import store from '@/store/'
//  前置守卫,白名单
const whitePage = ['/login', '/404']

router.beforeEach(async(to, from, next) => {
  console.log('beforeEach')
  /*
   检测是否有token   store.state.user.token
       有token
            是否所有页面正常进入？
            如果是登陆页
                跳转到首页
            如果去的页面非登陆页
                正常进入
      没token
          直接回登陆页适合吗？就在login页，我需要跳转吗  404,白名单（不需要登陆的页面）
          如果要去的页面无须登陆  ,要去的页面是否在白名单
               直接正常进入
          如果要去的页面需要登陆
               跳转到登陆页
*/
  if (store.state.user.token) {
    // console.log('to', to)
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      // 如果去的页面非登陆页
      //            如果有用户信息
      //               不调用接口正常通过
      //           如果没有用户信息
      //               调用接口获取用户信息，且在成功后执行正常通过
      if (store.state.user.userInfo.userId) {
        next()
      } else {
        //  调用actions
        await store.dispatch('user/getUserInfo')
        //  调用获取用户信息成功了
        next()
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login?redirect='+to.fullPath)
    }
  }
})

// 后置守卫

router.afterEach(() => {
  console.log('afterEach')
})
